隨機行走的策略並不是效率良好的方法,
因此找出一個『從郵局出發且通過所有節點的路線』,機器人只要在這條路徑上來回兩次,必能完成所有遞送任務
const mailRoute = [
"Alice's House", "Cabin", "Alice's House", "Bob's House",
"Town Hall", "Daria's House", "Ernie's House",
"Grete's House", "Shop", "Grete's House", "Farm",
"Marketplace", "Post Office"
];
因為需要儲存『還沒經過的地點』並移除『已經經過的地點』
需要利用機器人的記憶儲存,於每次轉彎後刪除陣列中第一個元素
因此,使機器人移動的策略更新如下
function routeRobot(state , memory){
// Not visit any place, for initialization
if(memory.length === 0){
memory = mailRoute;
}
// remove the location after visit
return {direction: memory[0],memory: memory.slice(1) }
}
重新再啟動一次
另外宣告一個變數valueOfVillageStage
來裝隨機產生的state資料變數
確保兩個robot(randomRobot / routeRobot)都是傳入同組資料
另外啟動 routeRobot 要記得 declare empty array 給 memory
// declare variable for state
const valueOfVillageStage = VillageState.random();
// invoke robot with randomRobot strategy
runRobot(valueOfVillageStage , randomRobot);
// invoke robot with routeRobot strategy
runRobot(valueOfVillageStage, routeRobot, []);
會發現 routeRobot 的效率明顯比 randomRobot 好
整體次數少很多